gtk4.git
5 years agomacos: only flush when not attached
Christian Hergert [Mon, 8 Feb 2021 17:53:46 +0000 (09:53 -0800)]
macos: only flush when not attached

This makes it so we only flush the context for the NSView, not the context
that is the center of our center of the GL context spokes.

5 years agomacos: mark region as unlikely
Christian Hergert [Mon, 8 Feb 2021 17:51:58 +0000 (09:51 -0800)]
macos: mark region as unlikely

5 years agogsk: make gsk_render_node_get_node_type() use const
Christian Hergert [Thu, 4 Feb 2021 04:53:23 +0000 (20:53 -0800)]
gsk: make gsk_render_node_get_node_type() use const

There isn't any state to modify in the type so we can use const here.
Doing so allows some of the renderer code to use const across a
number of functions so that repeated calls are elided if inlined.

5 years agogsk: make render node getters pure
Christian Hergert [Wed, 3 Feb 2021 23:00:28 +0000 (15:00 -0800)]
gsk: make render node getters pure

These do not do modify anything so they can be marked as pure to
potentially ellide calls. Since they do dereference, I do not believe
we can make them const although that is unclear since we could technically
just return a pointer + offset. Therefore it *might* be possible to also
make these G_GNUC_CONST.

5 years agogsk: make render node getters const
Christian Hergert [Wed, 3 Feb 2021 22:49:42 +0000 (14:49 -0800)]
gsk: make render node getters const

This also removes the return if fail macros from these as a good portion
of them didn't have them anyway. I think it's fair to say that access to
these incorrectly is a programmer error.

It significantly reduces the amount of code generated into generally a
movss,ret.

5 years agoprofiler: allow using gdk profiler functions without braces
Christian Hergert [Tue, 2 Feb 2021 22:41:23 +0000 (14:41 -0800)]
profiler: allow using gdk profiler functions without braces

Just compiling these out means you have to write code slightly differently
so that you don't end up with "if ();" afterwards.

This adds a "do {} while (0)" so that we're still semantically a statement
but will also compile out.

5 years agoMerge branch 'wip/exalm/headerbar' into 'master'
Matthias Clasen [Mon, 8 Feb 2021 15:38:48 +0000 (15:38 +0000)]
Merge branch 'wip/exalm/headerbar' into 'master'

headerbar: Don't use gtk_widget_unparent() with GtkBox

See merge request GNOME/gtk!3169

5 years agoheaderbar: Null-check boxes when removing window controls
Alexander Mikhaylenko [Mon, 8 Feb 2021 13:46:35 +0000 (18:46 +0500)]
headerbar: Null-check boxes when removing window controls

Prevent a crash when show-title-buttons value changes to FALSE during
destruction.

5 years agoheaderbar: Don't use gtk_widget_unparent() with GtkBox
Alexander Mikhaylenko [Mon, 8 Feb 2021 12:52:10 +0000 (17:52 +0500)]
headerbar: Don't use gtk_widget_unparent() with GtkBox

gtk_widget_unparent() is for widget implementations, it's not supposed to
be used from outside.

5 years agoMerge branch 'printing-temporary-queues-gtk4' into 'master'
Matthias Clasen [Sun, 7 Feb 2021 16:13:46 +0000 (16:13 +0000)]
Merge branch 'printing-temporary-queues-gtk4' into 'master'

printing: Create temporary queues for Avahi printers

See merge request GNOME/gtk!3160

5 years agoMerge branch 'focus' into 'master'
Matthias Clasen [Sun, 7 Feb 2021 15:57:11 +0000 (15:57 +0000)]
Merge branch 'focus' into 'master'

listbox: Fix handling of non-focusable rows

Closes #3633

See merge request GNOME/gtk!3152

5 years agoMerge branch 'fix-x11-drop' into 'master'
Matthias Clasen [Sun, 7 Feb 2021 14:52:24 +0000 (14:52 +0000)]
Merge branch 'fix-x11-drop' into 'master'

x11: More dnd fixes

Closes #3654

See merge request GNOME/gtk!3166

5 years agox11: More dnd fixes
Matthias Clasen [Sun, 7 Feb 2021 14:00:09 +0000 (09:00 -0500)]
x11: More dnd fixes

Whenever we communicate targets, we need to the union, otherwise
we don't tell the other side about our serialization. This makes
drops of images from gtk4-icon-browser to gimp and libreoffice
succeed in transferring data.

Fixes: #3654
5 years agoMerge branch 'fix-x11-drop' into 'master'
Matthias Clasen [Sun, 7 Feb 2021 06:52:45 +0000 (06:52 +0000)]
Merge branch 'fix-x11-drop' into 'master'

Fix x11 drop

Closes #3652

See merge request GNOME/gtk!3165

5 years agox11: Pass mimetypes when creating output stream
Matthias Clasen [Sun, 7 Feb 2021 06:32:39 +0000 (01:32 -0500)]
x11: Pass mimetypes when creating output stream

When creating the output stream for a drop, we must
pass the mimetypes we support, otherwise the picking
of the right handler does not work.

Fixes: #3652
5 years agox11: Fix a memory leak
Matthias Clasen [Sun, 7 Feb 2021 06:31:40 +0000 (01:31 -0500)]
x11: Fix a memory leak

We ref the content formats here, so we better unref it
when done.

5 years agox11: Some code cleanups
Matthias Clasen [Sun, 7 Feb 2021 06:30:50 +0000 (01:30 -0500)]
x11: Some code cleanups

Fix some glaring misindentation.

5 years agoMerge branch 'matthiasc/for-master' into 'master'
Matthias Clasen [Sat, 6 Feb 2021 22:35:23 +0000 (22:35 +0000)]
Merge branch 'matthiasc/for-master' into 'master'

Implement drop-shadow css filter

See merge request GNOME/gtk!3163

5 years agoAdd tests for the css filter property
Matthias Clasen [Sat, 6 Feb 2021 02:37:47 +0000 (21:37 -0500)]
Add tests for the css filter property

Test that we can parse filters and that we
don't accept invalid filters.

5 years agocssfiltervalue: Reject invalid filters
Matthias Clasen [Sat, 6 Feb 2021 03:59:20 +0000 (22:59 -0500)]
cssfiltervalue: Reject invalid filters

The Filter Effects Spec doesn't allow negative values
for most of the filter parameters.

5 years agocssfiltervalue: Fix blur filter interpretation
Matthias Clasen [Sat, 6 Feb 2021 03:06:56 +0000 (22:06 -0500)]
cssfiltervalue: Fix blur filter interpretation

According to https://www.w3.org/TR/filter-effects-1/,
the length passed to blur() is the standard deviation,
and according to https://www.w3.org/TR/css-backgrounds-3/#shadow-blur
the blur radius is twice the standard deviation.

5 years agocssfiltervalue: Implement drop-shadows
Matthias Clasen [Sat, 6 Feb 2021 02:37:14 +0000 (21:37 -0500)]
cssfiltervalue: Implement drop-shadows

We have all the pieces, so this is surprisingly easy.

5 years agocssshadowvalue: Add a 'filter mode'
Matthias Clasen [Sat, 6 Feb 2021 14:44:16 +0000 (09:44 -0500)]
cssshadowvalue: Add a 'filter mode'

Shadow values created by gtk_css_shadow_value_new_filter or
gtk_css_shadow_value_parse_filter interpret their radius value
as standard deviation. Add a flag for this mode, and use it
where necessary.

5 years agocssshadowvalue: Add a parsing function
Matthias Clasen [Sat, 6 Feb 2021 02:36:22 +0000 (21:36 -0500)]
cssshadowvalue: Add a parsing function

Add a variant of the parse function that parses
just a single (non-box) shadow, as required for
the drop-shadow filter.

5 years agocssshadowvalue: Add gtk_css_shadow_value_pop_snapshot
Matthias Clasen [Sat, 6 Feb 2021 14:00:32 +0000 (09:00 -0500)]
cssshadowvalue: Add gtk_css_shadow_value_pop_snapshot

This is the counterpart ot gtk_css_shadow_value_push_snapshot.

To make this easy, move the determination whether we need a
shadow out of the push function and save it.

5 years agocssshadowvalue: Drop the underscore
Matthias Clasen [Sat, 6 Feb 2021 20:37:04 +0000 (15:37 -0500)]
cssshadowvalue: Drop the underscore

Rename _gtk_css_shadow_value_parse to drop the underscore.
It was the only underscore-prefixed function in this file.

5 years agoUpdated Czech translation
Marek Černocký [Sat, 6 Feb 2021 08:44:09 +0000 (09:44 +0100)]
Updated Czech translation

5 years agoAdd tests for the css filter property
Matthias Clasen [Sat, 6 Feb 2021 02:37:47 +0000 (21:37 -0500)]
Add tests for the css filter property

Test that we can parse filters.

5 years agocss: Implement the drop-shadow filter
Matthias Clasen [Sat, 6 Feb 2021 02:37:14 +0000 (21:37 -0500)]
css: Implement the drop-shadow filter

We have all the pieces, so this is surprisingly easy.

5 years agocssshadowvalue: Add a parsing function
Matthias Clasen [Sat, 6 Feb 2021 02:36:22 +0000 (21:36 -0500)]
cssshadowvalue: Add a parsing function

Add a variant of the parse function that parses
just a single (non-box) shadow, as required for
the drop-shadow filter.

5 years agoMerge branch 'module-ext' into 'master'
Matthias Clasen [Sat, 6 Feb 2021 01:15:09 +0000 (01:15 +0000)]
Merge branch 'module-ext' into 'master'

meson: use correct module file extension on macOS

Closes #3645

See merge request GNOME/gtk!3162

5 years agomeson: use correct module file extension on macOS
David Lechner [Fri, 5 Feb 2021 21:56:14 +0000 (15:56 -0600)]
meson: use correct module file extension on macOS

GModule requires the .so file extension on macOS for historic reasons.
However Meson defaults to .dylib for modules, so we need to override
it to get the correct extension.

Fixes #3645.

5 years agoprinting: Show all Avahi advertised printers
Marek Kasik [Fri, 5 Feb 2021 17:13:56 +0000 (18:13 +0100)]
printing: Show all Avahi advertised printers

This commit unsubscribes CUPS backend from a DBus
signal in idle when listening for new items on Avahi.

Since GDBus emits gathered signals in idle while
checking whether the signal has been unsubscribed
it could happen that a signal was not processed
because it was removed from hash table of
subscribed signals.
This caused the situation where printers advertised
on Avahi were not listed in CUPS backend sometimes.

We need those signals since this happens when switching
from a general subscription which listens to signals
for all Avahi services to a specific one which listens
to just _ipp._tcp and _ipps._tcp (chicken and egg problem).

5 years agoprinting: Create temporary queues for Avahi printers
Marek Kasik [Fri, 5 Feb 2021 17:13:34 +0000 (18:13 +0100)]
printing: Create temporary queues for Avahi printers

This change extends set of Avahi advertised printers which
works with Gtk's CUPS print backend.

It creates a temporary queue (local printer) for each
Avahi printer in CUPS instead of accessing them directly
(via CUPS library).

This makes some printers work which did not work before and
also gives users more options to change in the print dialog.

This also changes naming of printers to be in accordance with CUPS.
It uses '_' instead of '-' and has hostname appended for CUPS remote
printers.

5 years agoMerge branch 'matthiasc/for-master' into 'master'
Matthias Clasen [Fri, 5 Feb 2021 12:48:10 +0000 (12:48 +0000)]
Merge branch 'matthiasc/for-master' into 'master'

iconbrowser: Make image dnd work again

Closes #3648

See merge request GNOME/gtk!3159

5 years agoMerge branch 'master' into 'master'
Emmanuele Bassi [Fri, 5 Feb 2021 12:14:26 +0000 (12:14 +0000)]
Merge branch 'master' into 'master'

Improve the docs of GtkWidget and GtkGrid

See merge request GNOME/gtk!2946

5 years agoiconbrowser: Make image dnd work again
Matthias Clasen [Fri, 5 Feb 2021 01:46:51 +0000 (20:46 -0500)]
iconbrowser: Make image dnd work again

We need to drag a texture, not a paintable.

Fixes: #3648
5 years agoMerge branch 'matthiasc/for-master' into 'master'
Matthias Clasen [Fri, 5 Feb 2021 00:10:47 +0000 (00:10 +0000)]
Merge branch 'matthiasc/for-master' into 'master'

docs: Rewrite the long description for GtkDialog

Closes #3646

See merge request GNOME/gtk!3156

5 years agoMerge branch 'doc-typo' into 'master'
Matthias Clasen [Fri, 5 Feb 2021 00:07:18 +0000 (00:07 +0000)]
Merge branch 'doc-typo' into 'master'

gtkshow: Fix doc typo

See merge request GNOME/gtk!3158

5 years agogtkshow: Fix doc typo
Maximiliano Sandoval R [Thu, 4 Feb 2021 20:02:22 +0000 (21:02 +0100)]
gtkshow: Fix doc typo

5 years agodocs: Rewrite the long description for GtkDialog
Matthias Clasen [Thu, 4 Feb 2021 18:05:28 +0000 (13:05 -0500)]
docs: Rewrite the long description for GtkDialog

As was pointed out in #3646, some of the content here
was a bit outdated.

Fixes: #3646
5 years agoMerge branch 'matthiasc/for-master' into 'master'
Matthias Clasen [Thu, 4 Feb 2021 13:28:59 +0000 (13:28 +0000)]
Merge branch 'matthiasc/for-master' into 'master'

More work on css transition tests

See merge request GNOME/gtk!3154

5 years agoDrop the installed test for now
Matthias Clasen [Thu, 4 Feb 2021 06:05:40 +0000 (01:05 -0500)]
Drop the installed test for now

It fails in ci, and I have no idea why.

5 years agoMerge branch 'pvs-fixes' into 'master'
Matthias Clasen [Thu, 4 Feb 2021 12:20:24 +0000 (12:20 +0000)]
Merge branch 'pvs-fixes' into 'master'

Pvs fixes

See merge request GNOME/gtk!3155

5 years agotreemodelfilter: Drop unreachable code
Matthias Clasen [Thu, 4 Feb 2021 05:40:14 +0000 (00:40 -0500)]
treemodelfilter: Drop unreachable code

We never get here. The compiler says so.

Pointed out in https://www.viva64.com/en/b/0793/

5 years agocss: Drop a bit of unreachable code
Matthias Clasen [Thu, 4 Feb 2021 05:39:34 +0000 (00:39 -0500)]
css: Drop a bit of unreachable code

We never get here. The compiler says so.

Pointed out in https://www.viva64.com/en/b/0793/

5 years agoa11y: Avoid out-of-bounds access
Matthias Clasen [Thu, 4 Feb 2021 05:34:05 +0000 (00:34 -0500)]
a11y: Avoid out-of-bounds access

Don't use the index before we've checked its good.

Pointed out in https://www.viva64.com/en/b/0793/

5 years agogdk: Remove a redundant check
Matthias Clasen [Thu, 4 Feb 2021 05:29:51 +0000 (00:29 -0500)]
gdk: Remove a redundant check

We already know desktop_notification_id is not NULL.

Pointed out in https://www.viva64.com/en/b/0793/

5 years agomessagedialog: Don't initialize twice
Matthias Clasen [Thu, 4 Feb 2021 05:25:36 +0000 (00:25 -0500)]
messagedialog: Don't initialize twice

We don't need to set these fields more than once.

Pointed out in https://www.viva64.com/en/b/0793/

5 years agocomposetable: Remove a redundant check
Matthias Clasen [Thu, 4 Feb 2021 05:22:52 +0000 (00:22 -0500)]
composetable: Remove a redundant check

We already know seq_index is not NULL here.

Pointed out in https://www.viva64.com/en/b/0793/

5 years agox11: A case of argument order confusion
Matthias Clasen [Thu, 4 Feb 2021 05:20:26 +0000 (00:20 -0500)]
x11: A case of argument order confusion

translate_keysym was expecting its arguments the
other way around.

Pointed out in https://www.viva64.com/en/b/0793/

5 years agotextbtree: Avoid line vs char count confusion
Matthias Clasen [Thu, 4 Feb 2021 05:17:55 +0000 (00:17 -0500)]
textbtree: Avoid line vs char count confusion

The post_insert_fixup helper function was confused about
its argument order.

Pointed out in https://www.viva64.com/en/b/0793/

5 years agolistbase: Don't specify the same thing twice
Matthias Clasen [Thu, 4 Feb 2021 05:13:53 +0000 (00:13 -0500)]
listbase: Don't specify the same thing twice

We only need to set EXPLICIT_NOTIFY once.

Pointed out in https://www.viva64.com/en/b/0793/

5 years agocss: Fix border value parsing
Matthias Clasen [Thu, 4 Feb 2021 05:11:42 +0000 (00:11 -0500)]
css: Fix border value parsing

This function was not resetting computed as it meant
to because the last loop was never executed.

Pointed out in https://www.viva64.com/en/b/0793/

5 years agovulkan: Fix image uploading by regions
Matthias Clasen [Thu, 4 Feb 2021 05:09:09 +0000 (00:09 -0500)]
vulkan: Fix image uploading by regions

This code did not make sense; it was incrementing
the wrong variable.

Pointed out in https://www.viva64.com/en/b/0793/

5 years agodocs: Mention css drop-shadow filter
Matthias Clasen [Thu, 4 Feb 2021 01:27:55 +0000 (20:27 -0500)]
docs: Mention css drop-shadow filter

We don't support this filter, currently.

5 years agoAdd more css transition tests
Matthias Clasen [Wed, 3 Feb 2021 19:47:24 +0000 (14:47 -0500)]
Add more css transition tests

5 years agoRename test to transition
Matthias Clasen [Wed, 3 Feb 2021 19:32:50 +0000 (14:32 -0500)]
Rename test to transition

Thats what it is about, so name it clearly.

Add missing installed tests too.

5 years agoAdd more css transition tests
Matthias Clasen [Wed, 3 Feb 2021 16:57:34 +0000 (11:57 -0500)]
Add more css transition tests

Test font size transitions.

5 years agotestsuite: Pass GDK_DEBUG=default-settings to css tests
Matthias Clasen [Wed, 3 Feb 2021 16:56:43 +0000 (11:56 -0500)]
testsuite: Pass GDK_DEBUG=default-settings to css tests

Otherwise, settings might creep in and change css defaults.

5 years agocssvalue: Cosmetic change
Matthias Clasen [Wed, 3 Feb 2021 16:56:19 +0000 (11:56 -0500)]
cssvalue: Cosmetic change

Don't return FALSE from pointer-returning functions.

5 years agoImprove the css value tests
Matthias Clasen [Wed, 3 Feb 2021 16:21:57 +0000 (11:21 -0500)]
Improve the css value tests

The test code had some bugs. Fix those, and
print out useful information when tests fail.

5 years agocss: Fix shadow value equal
Matthias Clasen [Wed, 3 Feb 2021 16:21:23 +0000 (11:21 -0500)]
css: Fix shadow value equal

This function was not doing the right thing.

Once we are doing the right thing and not compare
shadows as unequal, some reftests that inhibit
snapshots for a few frames now hang forever, since
we are no more redrawing unnecessarily. Fix that
with an explicit queue_draw.

5 years agoMerge branch 'wip/jimmac/colored-list-image-buttons' into 'master'
Matthias Clasen [Thu, 4 Feb 2021 01:38:47 +0000 (01:38 +0000)]
Merge branch 'wip/jimmac/colored-list-image-buttons' into 'master'

Adwaita: allow suggested and destructive action buttons in lists

Closes #3643

See merge request GNOME/gtk!3153

5 years agoMerge branch 'ebassi/for-master' into 'master'
Matthias Clasen [Thu, 4 Feb 2021 01:38:09 +0000 (01:38 +0000)]
Merge branch 'ebassi/for-master' into 'master'

Graphene is a dependency of Gsk, not Gdk

See merge request GNOME/gtk!3149

5 years agoAdwaita: allow suggested and destructive action buttons in lists
Jakub Steiner [Wed, 3 Feb 2021 22:13:24 +0000 (23:13 +0100)]
Adwaita: allow suggested and destructive action buttons in lists

Fixes https://gitlab.gnome.org/GNOME/gtk/-/issues/3643

5 years agolistbox: Fix handling of non-focusable rows
Elias Projahn [Wed, 3 Feb 2021 19:54:06 +0000 (20:54 +0100)]
listbox: Fix handling of non-focusable rows

This commit modifies the gtk_list_box_row_grab_focus() implementation to
correctly return FALSE in case the row couldn't be focused. This behavior will
also be honored by gtk_list_box_row_focus() to properly handle focus in that
case. To achieve that, the method has been restructured slightly.

Closes #3633

5 years agoMerge branch 'x11-dnd-fix' into 'master'
Matthias Clasen [Wed, 3 Feb 2021 20:11:33 +0000 (20:11 +0000)]
Merge branch 'x11-dnd-fix' into 'master'

x11: Handle X-specific targets in drops

Closes #3642

See merge request GNOME/gtk!3151

5 years agox11: Handle X-specific targets in drops
Matthias Clasen [Wed, 3 Feb 2021 19:16:01 +0000 (14:16 -0500)]
x11: Handle X-specific targets in drops

This code is very similar to the handling for these
targets in the clipboard case.

Fixes: #3642
5 years agoMerge branch 'matthiasc/for-master' into 'master'
Matthias Clasen [Wed, 3 Feb 2021 15:17:34 +0000 (15:17 +0000)]
Merge branch 'matthiasc/for-master' into 'master'

Matthiasc/for master

See merge request GNOME/gtk!3150

5 years agoGraphene is a dependency of Gsk, not Gdk
Emmanuele Bassi [Wed, 3 Feb 2021 14:05:27 +0000 (14:05 +0000)]
Graphene is a dependency of Gsk, not Gdk

So let's put it in the right place when building the introspection data.

5 years agoLink the data url tests statically
Matthias Clasen [Wed, 3 Feb 2021 14:02:06 +0000 (09:02 -0500)]
Link the data url tests statically

Thats the cleaner way to test internal apis.

5 years agoAdd tests for css value transitions
Matthias Clasen [Wed, 3 Feb 2021 13:56:57 +0000 (08:56 -0500)]
Add tests for css value transitions

Just a few cases for now, enough to test a recently
fixed regression with shadow transitions.

5 years agoMerge branch 'uac.meson.master' into 'master'
Chun-wei Fan [Wed, 3 Feb 2021 02:16:58 +0000 (02:16 +0000)]
Merge branch 'uac.meson.master' into 'master'

gtk4-update-icon-cache: Avoid UAC on 32-bit Windows

Closes #3632

See merge request GNOME/gtk!3141

5 years agogtk4-update-icon-cache: Avoid UAC on 32-bit Windows
Chun-wei Fan [Wed, 3 Feb 2021 02:16:58 +0000 (02:16 +0000)]
gtk4-update-icon-cache: Avoid UAC on 32-bit Windows

As the program executable name has 'update' in its filename,
gtk4-update-icon-cache.exe is considered to be an installer program on 32-bit
Windows [1], which will cause the program to fail to run unless it is running
with elevated privileges (i.e. UAC).

Avoid this situation by embedding a manifest file into the final executable
that tells Windows that this is not a program that requires elevation.

Fixes issue #3632.

[1]: https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-vista/cc709628(v=ws.10)?redirectedfrom=MSDN,
     under section "Installer Detection  Technology"

5 years agoMerge branch 'matthiasc/for-master' into 'master'
Matthias Clasen [Wed, 3 Feb 2021 00:43:44 +0000 (00:43 +0000)]
Merge branch 'matthiasc/for-master' into 'master'

css: Allow transitioning different-size shadows

See merge request GNOME/gtk!3145

5 years agocss: Allow transitioning different-size shadows
Matthias Clasen [Tue, 2 Feb 2021 20:22:32 +0000 (15:22 -0500)]
css: Allow transitioning different-size shadows

The code handles it just fine. The length check was
an erronous addition.

5 years agoMerge branch 'im-context-work' into 'master'
Matthias Clasen [Tue, 2 Feb 2021 17:29:14 +0000 (17:29 +0000)]
Merge branch 'im-context-work' into 'master'

Some im context work

Closes #1004, #186, and #3521

See merge request GNOME/gtk!3143

5 years agocomposetable: Parse hex escapes too
Matthias Clasen [Tue, 2 Feb 2021 17:00:51 +0000 (12:00 -0500)]
composetable: Parse hex escapes too

This was a small omission from the Compose file
syntax that doesn't cost us much to support.

Add a test for this syntax too.

Fixes: #1004
5 years agoAdd tests for string values
Matthias Clasen [Tue, 2 Feb 2021 16:53:24 +0000 (11:53 -0500)]
Add tests for string values

Add a test that checks we parse values with
multiple characters correctly.

5 years agocomposetable: Support string values in the cache
Matthias Clasen [Tue, 2 Feb 2021 06:42:08 +0000 (01:42 -0500)]
composetable: Support string values in the cache

Change the cache format to include the character
data that we need to hold string values in the table.

5 years agocomposetable: Don't use GSlice for big blobs
Matthias Clasen [Tue, 2 Feb 2021 06:15:00 +0000 (01:15 -0500)]
composetable: Don't use GSlice for big blobs

This just doesn't make sense. This will use malloc
anyway, so just call malloc directly.

5 years agocomposetable: Keep multi-char values
Matthias Clasen [Tue, 2 Feb 2021 06:09:54 +0000 (01:09 -0500)]
composetable: Keep multi-char values

Keep string values in the table, and return them
from the check function. This commit temporarily
disables the table caching, since the cache format
does not handle string values yet.

Fixes: #186
5 years agoMerge branch 'wip/silence-bounds-warnings' into 'master'
Matthias Clasen [Tue, 2 Feb 2021 16:38:20 +0000 (16:38 +0000)]
Merge branch 'wip/silence-bounds-warnings' into 'master'

gdk/toplevelsize: Remove warnings about exceeding bounds

Closes #3035

See merge request GNOME/gtk!3142

5 years agocomposetable: Parse multi-char values
Matthias Clasen [Tue, 2 Feb 2021 05:21:11 +0000 (00:21 -0500)]
composetable: Parse multi-char values

Rewrite the value parsing function to accept strings
that hold more than a single Unicode character.

5 years agocomposetable: Another step towards multi-char values
Matthias Clasen [Tue, 2 Feb 2021 04:58:18 +0000 (23:58 -0500)]
composetable: Another step towards multi-char values

Change the parser data structures to hold a string, rather
than a gunichar. We still only put a single Unicode character
into it, currently.

5 years agocomposetable: Prepare for multi character values
Matthias Clasen [Tue, 2 Feb 2021 04:37:05 +0000 (23:37 -0500)]
composetable: Prepare for multi character values

Make it possible for gtk_compose_table_check to return
a string instead of just a single Unicode character.
Currently, we only ever return strings holding a single
character, still.

5 years agoimcontext: Prepare for multi-char values
Matthias Clasen [Tue, 2 Feb 2021 04:37:22 +0000 (23:37 -0500)]
imcontext: Prepare for multi-char values

Reshuffle things so we can easily handle values
that are strings instead of just single Unicode
characters.

5 years agocomposetable: Check algorithmic matching
Matthias Clasen [Tue, 2 Feb 2021 02:52:42 +0000 (21:52 -0500)]
composetable: Check algorithmic matching

Just some spot checks, enough to verify the
fix in the previous commit.

5 years agocomposetable: Fix algorithmic matching
Matthias Clasen [Tue, 2 Feb 2021 02:51:51 +0000 (21:51 -0500)]
composetable: Fix algorithmic matching

The code wasn't paying attention to (lack of) nul-termination
in one place, causing it to not match when it should.

5 years agocomposetable: Add tests for compact table matching
Matthias Clasen [Tue, 2 Feb 2021 02:10:44 +0000 (21:10 -0500)]
composetable: Add tests for compact table matching

Not very exhaustive, just some spot checks.

5 years agoimcontext: Code cleanup
Matthias Clasen [Tue, 2 Feb 2021 01:41:45 +0000 (20:41 -0500)]
imcontext: Code cleanup

Get rid of auxiliary check_table function.

5 years agoimcontext: Move code around
Matthias Clasen [Tue, 2 Feb 2021 01:27:38 +0000 (20:27 -0500)]
imcontext: Move code around

Move all the checking code to gtkcomposetable.c, and
add api that we can use in tests.

5 years agocomposetable: Add tests for matching
Matthias Clasen [Tue, 2 Feb 2021 00:55:56 +0000 (19:55 -0500)]
composetable: Add tests for matching

This tests the api we use to match key sequences
against compose tables.

5 years agoimcontext: Use gtk_compose_table_check
Matthias Clasen [Tue, 2 Feb 2021 00:41:07 +0000 (19:41 -0500)]
imcontext: Use gtk_compose_table_check

Use the just-introduced api.

5 years agocomposetable: Add api to check tables
Matthias Clasen [Tue, 2 Feb 2021 00:40:22 +0000 (19:40 -0500)]
composetable: Add api to check tables

This copies the check_table code from gtkimcontextsimple.c,
in order to have an api for tests.

5 years agoAdd tests for GtkComposeTable
Matthias Clasen [Mon, 1 Feb 2021 20:48:06 +0000 (15:48 -0500)]
Add tests for GtkComposeTable

Add some tests for the code that parses Compose files.

This tests the fix in the previous commit.

5 years agocomposetable: Drop table debug code
Matthias Clasen [Mon, 1 Feb 2021 23:50:20 +0000 (18:50 -0500)]
composetable: Drop table debug code

This is better off in the tests that we are going to add.

5 years agocomposetable: Parser fixes
Matthias Clasen [Mon, 1 Feb 2021 20:48:43 +0000 (15:48 -0500)]
composetable: Parser fixes

We were not handling octal escapes right.

5 years agoimcontext: Drop GTK_MAX_COMPOSE_LEN
Matthias Clasen [Mon, 1 Feb 2021 17:28:40 +0000 (12:28 -0500)]
imcontext: Drop GTK_MAX_COMPOSE_LEN

Drop GTK_MAX_COMPOSE_LEN from docs. It is no longer
used by GTK at all.  We leave the define in place
for now, to avoid breaking 3rd party code that might
use it.